package Collection;
/**
 * 集合不能存储基本数据类型，存储的是对象，对象是引用类型，所以集合可以存储对象
 * 保存的是元素的地址，所以集合存储的对象是同一个地址，如果修改地址，那么集合中的对象也会改变
 */

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo3 {
    public static void main(String[] args) {
        Collection c =new ArrayList();
        c.add(123);//c.add(Integer.valueOf(123));此处自动装箱了
        Point p = new Point(1,2);
        c.add(p);//将p添加到集合c中-----将引用(地址)装到了c中
        System.out.println(p);//(1,2),在Point类中重写了toString方法所以有括号
        System.out.println(c);//[123, (1,2)]
        p.setX(100);//修改了p的属性
        System.out.println(p);//(100,2)
        System.out.println(c);//[123, (100,2)]
    }
}

/*在 Java 中，集合只能存储引用类型对象，不能直接存储基本数据类型。
* 是的，c集合装的是包装类 。在 Java 中，集合只能存储引用类型对象，不能直接存储基本数据类型。
* 当执行c.add(123); 时，由于 Java 的自动装箱机制，会自动将基本数据类型int的123转换为对应的包装类Integer对象 ，
* 等同于执行了c.add(Integer.valueOf(123)); ，所以集合c中实际存储的是Integer包装类对象。
* 包装类属于引用类型 。在集合操作、泛型编程等场景中，包装类作为引用类型，可方便地将基本数据类型纳入面向对象编程体系中进行处理 。
*  例如在ArrayList<Integer>集合中，Integer包装类对象以引用的方式存储在集合里 。*/